#include <stdlib.h>
#include <stdint.h>
#include <limits.h>
#include <errno.h>
#include "lock.h"
#include "malloc_impl.h"

#define ALIGN 16

// static void *__simple_malloc(size_t n)
// {
// 	static char *cur, *end;
// 	static volatile int lock[1];
// 	size_t align=1, pad;
// 	void *p;

// 	if (!n) n++;
// 	while (align<n && align<ALIGN)
// 		align += align;

// 	LOCK(lock);

// 	pad = -(uintptr_t)cur & align-1;

// 	if (n <= SIZE_MAX/2 + ALIGN) n += pad;

// 	if (n > end-cur) {
// 		size_t m = n;
// 		char *new = __expand_heap(&m);
// 		if (!new) {
// 			UNLOCK(lock);
// 			return 0;
// 		}
// 		if (new != end) {
// 			cur = new;
// 			n -= pad;
// 			pad = 0;
// 		}
// 		end = new + m;
// 	}

// 	p = cur + pad;
// 	cur += n;
// 	UNLOCK(lock);
// 	return p;
// }

// weak_alias(__simple_malloc, malloc);

// static void *__simple_calloc(size_t m, size_t n)
// {
// 	if (n && m > (size_t)-1/n) {
// 		errno = ENOMEM;
// 		return 0;
// 	}
// 	return __simple_malloc(n * m);
// }

// weak_alias(__simple_calloc, calloc);
